<?php
/*
459. 重复的子字符串
给定一个非空的字符串，判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母，并且长度不超过10000。

示例 1:
输入: "abab"
输出: True
解释: 可由子字符串 "ab" 重复两次构成。

示例 2:
输入: "aba"
输出: False

示例 3:
输入: "abcabcabcabc"
输出: True
解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)

https://leetcode-cn.com/problems/repeated-substring-pattern/

*/

$s = "abcabcabcabc";
var_dump((new Solution459())->repeatedSubstringPattern($s));

class Solution459
{
    // 从头开始由少到多获得子串去拼接
    function repeatedSubstringPattern($s)
    {
        for ($i = 1, $len = strlen($s); $i <= $len; $i++) {
            // 取子串
            $tmp = substr($s, 0, $i);
            // 如果当前指针超过一半了那肯定没有符合要求的子串
            if ($i > floor($len / 2)) {
                return false;
            }

            if ($len % $i != 0) {
                continue;
            }
            $newS = str_repeat($tmp, $len / $i);
            if ($newS == $s) {
                return true;
            }
        }
        return false;
    }




}
